#include <iostream>
#include "DoubleLinkList.h"

const int StackSize = 10;

class ArrayStack
{
public:
    ArrayStack() : len(0) {};
    // 入栈
    void Push(const int &element)
    {
        if (len == StackSize)
        {
            std::cout << "栈空间满" << std::endl;
            return;
        }
        a[len] = element;
        len++;
    }

    // 出栈
    void Pop()
    {
        if (len == 0)
        {
            std::cout << "栈空间为0!" << std::endl;
            return;
        }
        len--;
    }

    // 获取栈顶元素
    int *GetTop()
    {
        if (len == 0)
        {
            std::cout << "栈空间为0!" << std::endl;
            return nullptr;
        }

        return &a[len - 1];
    }

    // 判断栈是否为空
    bool IsEmPTY()
    {
        return len == 0;
    }

private:
    int a[StackSize];
    int len; // 栈顶指针
};

// int main()
// {
//     ArrayStack s;
//     // for(int i=0;i<20;i++)
//     // {
//     //     s.Push(i+1);
//     // }
//     // while(s.IsEmPTY()==false)
//     // {
//     //     std::cout<<*s.GetTop()<<" ";
//     //     s.Pop();
//     // }
//     // std::cout<<std::endl;
//     // 进制转换器
//     int num = 0; // 代转换数据
//     int n;       // 进制
//     std::cin >> num >> n;
//     while (num > 0)
//     {
//         s.Push(num % n);
//         num /= n;
//     }
//     while (s.IsEmPTY() == false)
//     {
//         int value=*s.GetTop();
//         if (value > 9)
//         {
//             printf("%c ",value-10+'a');           
//         }else
//         {
//             std::cout << value <<" ";
//         }
//         s.Pop();
//     }
//     std::cout << std::endl;
//     return 0;
// }